import globals from 'globals'
import pluginJs from '@eslint/js'
import tseslint from 'typescript-eslint'
import pluginVue from 'eslint-plugin-vue'
//eslint-plugin-prettier依赖eslint-config-prettier，另需安装eslint-config-prettier
import prettierRecommended from 'eslint-plugin-prettier/recommended'

const IS_PROD = import.meta.env === 'production'

/** @type {import('eslint').Linter.Config[]} */
export default [
  {
    ignores: [
      '.DS_Store',
      '*.local',
      '.gitignore',
      '.npmrc',
      'node_modules',
      'dist',
      'dist-ssr',
      'dev-dist',
      'package.json',
      'package-lock.json',
      '*.d.ts',
      'src/assets/**'
    ]
  },
  {
    languageOptions: {
      //1.全局变量规范
      globals: globals.browser
    }
  },
  //2.js语言规范
  pluginJs.configs.recommended,
  //3.ts语言规范
  ...tseslint.configs.recommended,
  //4.vue3语言规范
  ...pluginVue.configs['flat/essential'],
  //5.自定义eslint相关规范
  {
    files: ['src/**/*.{ts,js,tsx,vue}'],
    rules: {
      'no-console': IS_PROD ? 'error' : 'off',//禁止使用console
      'no-alert': IS_PROD ? 'error' : 'off',//禁止使用alert confirm prompt
      'no-debugger': IS_PROD ? 'error' : 'off',//禁止使用debugger
      'no-var': 0,//禁用var，用let和const代替
      'no-empty': 2,//块语句中的内容不能为空
      'no-extra-semi': 2,//禁止多余的冒号
      'no-multiple-empty-lines': [1, {'max': 2}],//空行最多不能超过2行
      'indent': [2, 'tab'],//缩进为2个字符
      'camelcase': 2,//强制驼峰法命名
      'eqeqeq': 2,//必须使用全等
      //允许vue文件名为单个单词，对第4个vue3规范该定义进行覆盖
      'vue/multi-word-component-names': 'off'
    },
    languageOptions: {
      parserOptions: {
        //设置备用解析器为ts语言解析器，兼容js解析
        parser: tseslint.parser
      }
    }
  },
  //5.针对样式的stylelint规范
  // {
  //   extends: [
  //     'stylelint-config-standard', // 配置stylelint拓展插件
  //     'stylelint-config-standard-scss', // 配置stylelint scss插件
  //     'stylelint-config-html/vue', // 配置 vue 中 template 样式格式化
  //     'stylelint-config-recommended-vue/scss', // 配置 vue 中 scss 样式格式化
  //     'stylelint-config-recess-order', // 配置stylelint css属性书写顺序插件
  //   ],
  //   overrides: [
  //     {
  //       files: ['**/*.(scss|css)'],
  //       customSyntax: 'postcss-scss',
  //     },
  //     {
  //       files: ['**/*.(html|vue)'],
  //       customSyntax: 'postcss-html',
  //     },
  //   ]
  // },
  //6.追加的prettier规范，必须放到最后，不然会和eslint/stylelint冲突
  prettierRecommended 
];